package com.example.dto;

import com.example.entity.User;
import lombok.Data;

import java.util.List;

@Data
public class PageResult<T> {
    /**
     * 数据列表
     */
    private List<T> data;
    
    /**
     * 是否还有下一页
     */
    private Boolean hasNext;
    
    /**
     * 下一页游标（最后一个ID）
     */
    private Long nextCursor;
    
    /**
     * 当前页大小
     */
    private Integer pageSize;
    
    /**
     * 总数
     */
    private Long total;
    
    public static <T> PageResult<T> of(List<T> data, Long total, Integer pageSize) {
        PageResult<T> result = new PageResult<>();
        result.setData(data);
        result.setTotal(total);
        result.setPageSize(pageSize);
        
        // 判断是否还有下一页
        if (data != null && !data.isEmpty() && data.size() == pageSize) {
            // 如果是User类型，则获取最后一个元素的ID作为游标
            if (!data.isEmpty() && data.get(0) instanceof User) {
                User lastUser = (User) data.get(data.size() - 1);
                result.setNextCursor(lastUser.getId());
            }
            result.setHasNext(true);
        } else {
            result.setHasNext(false);
            result.setNextCursor(null);
        }
        
        return result;
    }
}